package controller;

import controller.dialog.DialogLancarDados;
import interfaces.ControlaJogo;
import java.io.Serializable;
import java.net.URL;
import java.rmi.RemoteException;
import java.util.List;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import model.Peao;
import model.TAGS;
import prjbancoimobilitariocliente.PrjBancoImobilitarioCliente;
import rmi.RMIServer;

/**
 * Controller que confirma a inteção de iniciar o jogo.
 *
 * @author Adriano
 */
public class ConfirmarController implements Initializable, ControlaJogo, Serializable {

    @FXML
    private Button confirmar;
    @FXML
    private Label labelMessage;
    @FXML
    private Label textJogadores;

    @FXML
    public void onConfirmar(ActionEvent event) throws RemoteException {
        confirmar.setVisible(false);
        try {
            RMIServer.getInstacia().getPlayJogador().confirmar(TAGS.NAME);
        } catch (Exception e) {
            try {
                Parent root = FXMLLoader.load(getClass().getResource("/view/Jogador/Cadastro.fxml"));
                PrjBancoImobilitarioCliente.getInstace().setStage(root);
                RMIServer.getInstacia().exitObserver();
            } catch (Exception d) {
                d.printStackTrace();
            }
        }
    }

    public void onSair(ActionEvent event) {
        System.exit(0);
    }

    @Override
    public void liberarTela(final boolean status) throws RemoteException {
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                if (status) {
                    try {
                        Parent root = FXMLLoader.load(getClass().getResource("/view/Tabuleiro.fxml"));
                        PrjBancoImobilitarioCliente.getInstace().setStage(root);
                        RMIServer.getInstacia().exitObserver();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    @Override
    public void escreveTeste(final String str) throws RemoteException {
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                textJogadores.setText(str);
            }
        });
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        ControllerObserver.getControllerObserver().setControlaJogo(this);
    }

    @Override
    public void jogadoresLista(final String jogadores) throws RemoteException {
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                textJogadores.setText(jogadores);
            }
        });
    }

    @Deprecated
    public void listaPeao(List<Peao> lista) throws RemoteException {}

    @Override
    public void vesdeJogada(final String jogadorNome) throws RemoteException {
         Platform.runLater(new Runnable() {
            @Override
            public void run() {
                if (jogadorNome.equals(TAGS.NAME)) {
                    DialogLancarDados.getIntancia().show();
                }
            }
        });
    }

    @Deprecated
    public void mensagem(String nome, String mensagem) throws RemoteException {}

    @Deprecated
    public void comprar(String nome, String campo) throws RemoteException {}

    @Deprecated
    public void intensaoCompra(String jogadorDono, String jogadorInteresado, String campo, String valor) throws RemoteException {
    }
}
